package com.mjk.manager.magicapi.core.modules.template;

import com.mjk.common.tools.logger.BizLogger;
import com.mjk.common.util.RandomUtil;
import com.mjk.manager.magicapi.core.core.annotation.MagicModule;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.ssssssss.script.annotation.Comment;
import org.ssssssss.script.runtime.RuntimeContext;

import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * 脚本解析语法 用于解析负责的 字符串
 * 需要满足FreeMarker 语法
 */
@MagicModule("str")
public class FreeMarkerModule {
    /**
     * @param context
     * @param temp
     * @return
     */
    @Comment("格式化字符串,需要遵循FreeMarker语法(<#list list as stu>) ${stu.id}")
    public String format(RuntimeContext context, String temp) {
        // 创建 FreeMarker 配置
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
        Map<String, Object> varMap = context.getVarMap();
        // 创建模板
        try {
            Template template = new Template(RandomUtil.getShortUuid(), temp, cfg);
            // 处理模板
            StringWriter out = new StringWriter();
            template.process(varMap, out);
            return out.toString();
        } catch (IOException | TemplateException e) {
            BizLogger.error(e);
            return "";
        }
    }
}
